package com.hisense.hisensedatacheck.service.impl;

import com.hisense.hisensedatacheck.dao.FrXzcfxxMapper;
import com.hisense.hisensedatacheck.dao.FrXzxkxxMapper;
import com.hisense.hisensedatacheck.dao.ZrrXzcfxxMapper;
import com.hisense.hisensedatacheck.dao.ZrrXzxkxxMapper;
import com.hisense.hisensedatacheck.entity.FrXzcfxx;
import com.hisense.hisensedatacheck.service.FrXzcfxxVerifyService;
import com.hisense.hisensedatacheck.uitls.Verify;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class FrXzcfxxVerifyServiceImpl implements FrXzcfxxVerifyService {
    @Autowired
    private FrXzcfxxMapper frXzcfxxMapper;


    //法人行政处罚信息
    @Override
    public void frXzcfxxVerify() {
        //        操作状态修改
        frXzcfxxMapper.updateOperation();
        List<FrXzcfxx> frXzcfxxes = frXzcfxxMapper.selectAll();
        ArrayList<FrXzcfxx> updateFrXzcfxx = new ArrayList<>();
        for (FrXzcfxx frXzcfxx : frXzcfxxes) {
            List<String> errors = new ArrayList<String>();
            if (Verify.isNull(frXzcfxx.getCfXdrMc())) {
                errors.add("“行政相对人名称”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfXdrMc(), 200)) {
                errors.add("“行政相对人名称”长度超过200个字符;");
            }
            if (Verify.isWenHao(frXzcfxx.getCfXdrMc())) {
                errors.add("“行政相对人名称”包含中英文问号;");
            }
            if (Verify.isNullOrTrueOrXingHao(frXzcfxx.getCfXdrMc())) {
                errors.add("“行政相对人名称”不得包含*或null或test;");
            }
            if (Verify.isZiFuChangDu(frXzcfxx.getCfXdrMc())) {
                errors.add("“长度必须大于一个汉字或大于三个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfXdrLb())) {
                errors.add("“（行政相对人类别）”字段为必填项;");
            }
            if (Verify.isXzxdrlb(frXzcfxx.getCfXdrLb())) {
                errors.add("“行政相对人类别”取值不符合字典表范围;");
            } else {
                if (Verify.isNull(frXzcfxx.getCfXdrShxym())) {
                    errors.add("“行政相对人类别”为法人及非法人组织或个体工商户时，“统一社会信用代码”必填;");
                }
                if (Verify.isTyshxydm(frXzcfxx.getCfXdrShxym())) {
                    errors.add("“行政相对人类别”为法人及非法人组织或个体工商户时，“统一社会信用代码”校验错误;");
                }
                if (Verify.isTyshxydmAndGszch(frXzcfxx.getCfXdrShxym(), frXzcfxx.getCfXdrGszc())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户，且统一社会信用代码为17个0+X时，“工商注册号”必填;");
                } else if (Verify.isTyshxydmAndGszchSize(frXzcfxx.getCfXdrShxym(), frXzcfxx.getCfXdrGszc())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户，且统一社会信用代码为17个0+X时，““工商注册号”长度超过50个字符;");
                }
                if (Verify.isNull(frXzcfxx.getCfFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”必填;");
                }
                if (Verify.isLength(frXzcfxx.getCfFrdb(), 50)) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”长度超过50个字符;");
                }
                if (Verify.isNullOrTrueOrXingHao(frXzcfxx.getCfFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含*或null或test或中英文问号，且长度必须大于一个汉字或大于三个字符;");
                } else if (Verify.isZiFuChangDu(frXzcfxx.getCfFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含*或null或test或中英文问号，且长度必须大于一个汉字或大于三个字符;");
                }
                if (Verify.isShuZi(frXzcfxx.getCfFrdb())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，“法定代表人”不得包含数字;");
                }
                if (Verify.isShuZi(frXzcfxx.getCfFrZjhm(), frXzcfxx.getCfFrZjlx())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时，且法定代表人证件号码不为空时，“法定代表人证件类型”必填;");
                }
                if (!Verify.isNull(frXzcfxx.getCfXdrZjlx())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时,“证件类型”必须为空;");
                }
                if (!Verify.isNull(frXzcfxx.getCfXdrZjhm())) {
                    errors.add("“行政相对人类别”为法人及非法人组织、个体工商户时,“证件号码”必须为空;");
                }
            }
            if (Verify.isZhongWen(frXzcfxx.getCfXdrGszc())) {
                errors.add("“工商注册号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzcfxx.getCfXdrGszc())) {
                errors.add("“工商注册号”含有除数字或字母之外的字符;");
            }
            if (Verify.isZhongWen(frXzcfxx.getCfXdrZzjg())) {
                errors.add("“组织机构代码”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzcfxx.getCfXdrZzjg())) {
                errors.add("“组织机构代码”含有除数字或字母之外的字符;");
            }
            if (Verify.isLength(frXzcfxx.getCfXdrSwdj(), 15)) {
                errors.add("“税务登记号”字符长度超过15个字符;");
            }
            if (Verify.isZhongWen(frXzcfxx.getCfXdrSwdj())) {
                errors.add("“税务登记号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzcfxx.getCfXdrSwdj())) {
                errors.add("“税务登记号”含有除数字或字母之外的字符;");
            }
            if (Verify.isLength(frXzcfxx.getCfXdrSydw(), 12)) {
                errors.add("“事业单位证书号”长度超过12个字符;");
            }
            if (Verify.isZhongWen(frXzcfxx.getCfXdrSydw())) {
                errors.add("“事业单位证书号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzcfxx.getCfXdrSydw())) {
                errors.add("“事业单位证书号”含有除数字或字母之外的字符;");
            }
            if (Verify.isLength(frXzcfxx.getCfXdrShzz(), 50)) {
                errors.add("“社会组织登记证号”长度超过50个字符;");
            }
            if (Verify.isZhongWen(frXzcfxx.getCfXdrShzz())) {
                errors.add("“社会组织登记证号”包含中文;");
            }
            if (Verify.isNotShuZiOrZiMu(frXzcfxx.getCfXdrShzz())) {
                errors.add("“社会组织登记证号”含有除数字或字母之外的字符;");
            }
            if (Verify.isFddbrzjlx(frXzcfxx.getCfFrZjlx())) {
                errors.add("“法定代表人证件类型”取值不符合字典表范围;");
            }
            if (Verify.fddbrzjlxIsShenFenZheng(frXzcfxx.getCfFrZjlx(), frXzcfxx.getCfFrZjhm())) {
                errors.add("“法定代表人证件类型”为“身份证”时，身份证号码校验错误;");
            }
            if (!Verify.isNull(frXzcfxx.getCfFrZjlx()) && Verify.isNull(frXzcfxx.getCfFrZjhm())) {
                errors.add("“法定代表人证件类型”不为空时，身份证号码必填;");
            }
            if (Verify.isNull(frXzcfxx.getCfFrZjlx()) && !Verify.isNull(frXzcfxx.getCfFrZjhm())) {
                errors.add("“法定代表人证件类型”为空时，“法定代表人证件号码”必须为空;");
            }
            if (Verify.isNull(frXzcfxx.getCfWsh())) {
                errors.add("“行政处罚决定书文号”为空;");
            }
            if (Verify.isNullOrTrueOrXingHao(frXzcfxx.getCfWsh())) {
                errors.add("““行政处罚决定书文号”不得包含*或null或test;");
            }
            if (Verify.isLength(frXzcfxx.getCfWsh(), 128)) {
                errors.add("“行政处罚决定书文号”长度超过128个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfWfxw())) {
                errors.add("“违法行为类型”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfWfxw(), 2000)) {
                errors.add("“违法行为类型”长度超过2000个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfSy())) {
                errors.add("“违法事实”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfSy(), 5000)) {
                errors.add("“违法事实”长度超过5000个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfYj())) {
                errors.add("“处罚依据”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfYj(), 2048)) {
                errors.add("“处罚依据”长度超过2048个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfCflb())) {
                errors.add("“处罚类别”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfCflb(), 64)) {
                errors.add("“处罚类别”长度超过64个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfNr())) {
                errors.add("“处罚内容”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfNr(), 4000)) {
                errors.add("“处罚内容”长度超过4000个字符;");
            }
            if (Verify.cflbAndFaKuan(frXzcfxx.getCfCflb(), frXzcfxx.getCfNrFk())) {
                errors.add("“处罚类别”包含罚款时，罚款金额必填且处罚金额必须大于0;");
            }
            if (Verify.cflbAndWfcw(frXzcfxx.getCfCflb(), frXzcfxx.getCfNrFk())) {
                errors.add("“处罚类别”包含没收违法所得、没收非法财物时，没收违法所得、没收非法财物的金额必填且没收违法所得、没收非法财物的金额必须大于或等于0;");
            }
            if (Verify.cflbAndYyzz(frXzcfxx.getCfCflb(), frXzcfxx.getCfNrZkdx())) {
                errors.add("“处罚类别”包含暂扣或者吊销许可证、暂扣或者吊销执照时，暂扣或吊销证照名称及编号必填;");
            }
            if (Verify.isNull(frXzcfxx.getCfJdrq())) {
                errors.add("“处罚决定日期”为空;");
            }
            if (Verify.riQiPanDuan(frXzcfxx.getCfJdrq(), new Date())) {
                errors.add("“处罚决定日期”不可超过当前日期;");
            }
            if (Verify.isNull(frXzcfxx.getCfYxq())) {
                errors.add("“处罚有效期”为空;");
            }
            if (Verify.riQiPanDuan(frXzcfxx.getCfJdrq(), frXzcfxx.getCfYxq())) {
                errors.add("“处罚有效期”不可小于“处罚决定日期;");
            }
            if (Verify.riQiXiaoYan(frXzcfxx.getCfYxq())) {
                errors.add("“处罚有效期”时间不合法;");
            }
            if (!Verify.isNull(frXzcfxx.getCfGsjzq()) && Verify.riQiPanDuan(frXzcfxx.getCfJdrq(), frXzcfxx.getCfGsjzq())) {
                errors.add("“公示截止期”不为空时不可小于“处罚决定日期;”");
            }
            if (Verify.riQiXiaoYan(frXzcfxx.getCfGsjzq())) {
                errors.add("“公示截止期”时间不合法;");
            }
            if (Verify.isNull(frXzcfxx.getCfCfjg())) {
                errors.add("“处罚机关”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfCfjg(), 200)) {
                errors.add("“处罚机关”长度超过200个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfCfjgdm())) {
                errors.add("“处罚机关统一社会信用代码”为空;");
            }
            if (Verify.isTyshxydm(frXzcfxx.getCfCfjgdm())) {
                errors.add("“处罚机关统一社会信用代码”校验错误;");
            }
            if (Verify.isNull(frXzcfxx.getCfSjly())) {
                errors.add("“数据来源单位”为空;");
            }
            if (Verify.isLength(frXzcfxx.getCfSjly(), 200)) {
                errors.add("“数据来源单位”长度超过200个字符;");
            }
            if (Verify.isNull(frXzcfxx.getCfSjlydm())) {
                errors.add("“数据来源单位统一社会信用代码”为空;");
            }
            if (Verify.isTyshxydm(frXzcfxx.getCfSjlydm())) {
                errors.add("“数据来源单位统一社会信用代码”校验错误;");
            }
            if (Verify.isLength(frXzcfxx.getBz(), 512)) {
                errors.add("“备注”长度超过512个字符;");
            }
            if (Verify.yiWenShuJu(frXzcfxx.getCfCfjgdm()) || Verify.yiWenShuJu(frXzcfxx.getCfSjlydm())) {
                errors.add("疑问数据（决定机关代码/数据来源单位代码）;");
            }
            if (!(frXzcfxx.getCdOperation().equals("I") || frXzcfxx.getCdOperation().equals("U") || frXzcfxx.getCdOperation().equals("D"))) {
                errors.add("“cd_operation（操作状态）”字段取值范围错误;");
            }
            if (errors.size() != 0) {
                frXzcfxx.setErrorData(errors.toString());
                updateFrXzcfxx.add(frXzcfxx);
            }
        }
        if (updateFrXzcfxx.size() != 0) {
            System.out.println("修改条数:"+updateFrXzcfxx.size());
            frXzcfxxMapper.updateErrorByIds(updateFrXzcfxx);
        }
        System.out.println("法人行政处罚执行完毕");
    }
}
